var ai={
    auto(list){
        console.log("test");
        this.get_len(list,1);
    },
    //color 2围棋走，1白棋走
    run(list,hard,mycolor){
        mycolor=mycolor?mycolor:2;
        var color=mycolor==2?1:2;
        if(hard==1){
            return this.run1(list,color);
        }
        if(hard==2){
            return this.run2(list,color);
        }
        return this.run3(list,color);
    },
    run1(list,color){
        //防守
        var win=this.get_win_now(list,color);
        if(win>-1){
            return win;
        }
        //防守
        var win=this.get_win_next(list,color);
        if(win>-1){
            return win;
        }
        //防守
        for(var num=2;num<=4;num++){
            var danger=this.get_danger(list,color,num);
            if(danger>-1){
                // console.log("re",num,danger)
                return danger;
            }
        }
        return -1;
    },
    run2(list,color){
        var mycolor=color==2?1:2;
        //进攻 
        var win=this.get_win_now(list,mycolor);
        if(win>-1){
            return win;
        }
        return this.run1(list,mycolor);
    },
    run3(list,color){
        var mycolor=color==1?2:1;
        //进攻 
        var win=this.get_win_now(list,mycolor);
        if(win>-1){
            return win;
        }
        //防守
        var win=this.get_win_now(list,color);
        if(win>-1){
            return win;
        }
        //防守
        var win=this.get_win_next(list,color);
        if(win>-1){
            return win;
        }
        //进攻
        var win=this.get_win_next(list,mycolor);
        if(win>-1){
            return win;
        }
        //防守
        for(var num=2;num<=4;num++){
            var danger=this.get_danger(list,color,num);
            if(danger>-1){
                // console.log("re",num,danger)
                return danger;
            }
        }
        return -1;
    },
    get_win_now(list,color){
        var danger=this.get_danger(list,color,1);
        if(danger>-1){
            return danger;
        }
        return -1;
    },
    get_win_next(list,color){
        var len=list.length;
        for(var i=0;i<len;i++){
            // _ooo_ [0,4]
            var re=this.get_item_danger(list,color,2,i,5,true);
            var j_len=re.length;
            if(j_len>0){
                console.log("2/5",re)
            }
            for(var j=0;j<j_len;j++){
                var item=re[j];
                if(item.danger_i.toString()==[0,4].toString()){
                     return item.danger[0];
                }
            }
            // _oo_o_ [0,3,5] 或 _o_oo_ [0,2,5]
            var six=this.get_item_danger(list,color,2,i,6,true);
            var length=six.length;
            if(length>0){
                console.log("3/6",six)
            }
            for(var j=0;j<length;j++){
                var item=six[j];
                var str=item.danger_i.toString();
                if(str==[0,3,5].toString()||str==[0,2,5].toString()){
                     return item.danger[0];
                }
            }
        }
        return -1;
    },
    get_danger(list,color,num){
        var len=list.length;
        for(var i=0;i<len;i++){
            var index=this.get_item_danger(list,color,num,i,5,false);
            if(index>-1) return index;
        }
        return -1;
    },
    get_item_danger(list,color,num,index,item_len,is_all){
        var danger=[];
        var danger_i=[];
        var all=[];
        if(index%15<16-item_len){
            //横
            for(var i=0;i<item_len;i++){
                var now=index+i;
                if(!list[now][0]){
                    danger.push(now);
                    danger_i.push(i);
                }
                if( (list[now][0]&&list[now][0]!=color) || danger.length>num ){
                    danger=[];
                    danger_i=[];
                    break;
                }
            }
            if(danger.length==num){
                console.log("横",index,danger);
                if(is_all){
                    all.push({
                        danger,
                        danger_i,
                    })
                }else{
                    return this.get_most_danger(danger,danger_i);
                }
            } 
            //右下
            danger=[];
            danger_i=[];
            if(Math.floor(index/15)<16-item_len){
                for(var i=0;i<item_len;i++){
                    var now=index+16*i;
                   if(!list[now][0]){
                        danger.push(now);
                        danger_i.push(i);
                    }
                    if( (list[now][0]&&list[now][0]!=color) || danger.length>num ){
                        danger=[];
                        danger_i=[];
                        break;
                    }
                }
                if(danger.length==num){
                    // console.log("右下",index,danger);
                    if(is_all){
                        all.push({
                            danger,
                            danger_i,
                        })
                    }else{
                        return this.get_most_danger(danger,danger_i);
                    }
                } 
            }
        }
        //竖直
        danger=[];
        danger_i=[];
        if(Math.floor(index/15)<16-item_len){
            for(var i=0;i<item_len;i++){
                var now=index+15*i;
                if(!list[now][0]){
                    danger.push(now);
                    danger_i.push(i);
                }
                if( (list[now][0]&&list[now][0]!=color) || danger.length>num ){
                    danger=[];
                    danger_i=[];
                    break;
                }
            }
            if(danger.length==num){
                // console.log("竖直",index,danger);
                if(is_all){
                    all.push({
                        danger,
                        danger_i,
                    })
                }else{
                    return this.get_most_danger(danger,danger_i);
                }
            } 
            //左下
            danger=[];
            danger_i=[];
            if(index%15>=item_len-1){
                for(var i=0;i<item_len;i++){
                    var now=index+14*i;
                    if(!list[now][0]){
                        danger.push(now);
                        danger_i.push(i);
                    }
                    if( (list[now][0]&&list[now][0]!=color) || danger.length>num ){
                        danger=[];
                        danger_i=[];
                        break;
                    }
                }
                if(danger.length==num){
                    // console.log("左下",index,danger);
                    if(is_all){
                        all.push({
                            danger,
                            danger_i,
                        })
                    }else{
                        return this.get_most_danger(danger,danger_i);
                    }
                } 
            }
        }
        return is_all?all:-1;
    },
    get_most_danger(danger,danger_i){
        if(danger.length==1) return danger[0];
        var i=danger_i.toString();
        if(danger.length==2){
            if(i==[0,1].toString()||i==[0,2].toString()||i==[0,3].toString()){
                return danger[1];
            }
        }
        if(danger.length==3){
            if(i==[0,3,4].toString()
            ||i==[0,2,4].toString()
            ||i==[0,2,3].toString()
            ||i==[0,1,4].toString()
            ||i==[0,1,3].toString()
            ){
                return danger[1];
            }else if(i==[0,1,2].toString()){
                return danger[2];
            }
        }
        if(danger.length==4){
            if(i==[0,1,3,4].toString()) return danger[1];
            if(i==[0,1,2,4].toString()) return danger[2];
            if(i==[0,1,2,3].toString()) return danger[3];
        }
        return danger[0];//应该增加随机返回的结果
    },
    get_len(){
        var re=[];
        /* 
            item:{
            len:0,
            arr:[],//
            }
        */
        list.map((v,i)=>{
            if(v[0]==color){
                re.push(this.get_per_len(list,i));
            }
        })
        console.log("re",re);
    },
    get_per_len(list,index){
        var v=list[index];
        var color=v[0];
        var arr=[];
        var left=index%15;
        var right=14-left;
        var item=[];
        for(var i=1;i<=left;i++){
            var now=index-i;
            if(list[now]==color){
                item.push(now);
            }else{
                break;
            }
        }
        item.push(index);
        for(var i=1;i<=right;i++){
            var now=index+i;
            if(list[now]==color){
                item.push(now);
            }else{
                break;
            }
        }
        if(item.length>1){
            arr.push(item);
        }
        item=[];
        var top=Math.floor(index/15);
        var bottom=14-top;
        for(var i=1;i<=top;i++){
            var now=index-15*i;
            if(list[now]==color){
                item.push(now);
            }else{
                break;
            }
        }
        item.push(index);
        for(var i=1;i<=bottom;i++){
            var now=index+15*i;
            if(list[now]==color){
                item.push(now);
            }else{
                break;
            }
        }
        if(item.length>1){
            arr.push(item);
        }
        item=[];  
    },


}//end ai